package com.youko.backstage.web;

import com.youko.backstage.bean.Commodity;
import com.youko.backstage.dto.commodity.CommodityDto;
import com.youko.backstage.mapper.CommodityMapper;
import com.youko.backstage.service.CommodityService;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.util.List;
import java.util.UUID;

@RestController
public class CommodityController {
    @Value("${SavePath.ProfilePhoto}")
    private String ProfilePhotoSavePath;   //图标图片存储路径
    @Value("${SavePath.ProfilePhotoMapper}")
    private String ProfilePhotoMapperPath;   //图标映射路径

    @Autowired
    CommodityService commodityService;

    /**
     * 商品文件上传
     * @param id 商品id
     * @param fileUpload 上传图片文件
     * @return
     */
    @PostMapping("/merchant/profileCommodityPhotoUpload")
    public String profilePhotoUpload(@RequestParam int id,@RequestParam("file") MultipartFile fileUpload){
        //获取文件名
        String fileName = fileUpload.getOriginalFilename();
        //获取文件后缀名。也可以在这里添加判断语句，规定特定格式的图片才能上传，否则拒绝保存。
        String suffixName = fileName.substring(fileName.lastIndexOf("."));
        //为了避免发生图片替换，这里使用了文件名重新生成
        fileName = UUID.randomUUID()+suffixName;
        try {
            //将图片保存到文件夹里
            fileUpload.transferTo(new File(ProfilePhotoSavePath+fileName));
            commodityService.updateCommodityPhotoPath(id,ProfilePhotoMapperPath+fileName);
            return ProfilePhotoMapperPath+fileName;
        } catch (Exception e) {
            e.printStackTrace();
            return "";
        }
    }


    /**
     *商品添加
     * @param commodityDto
     * @return
     */
    @PostMapping("/merchant/insertCommodity")
    public String saveCommodity(@RequestBody CommodityDto commodityDto){
        if (commodityDto==null){
            return "商品信息缺失";
        }
        commodityService.saveCommodity(commodityDto);
        return "商品添加成功";
    }

    /**
     * 商品更新
     * @param commodityDto 商品包装类（含名字，价格，商家名字，规格，标签）
     * @return
     */
    @PostMapping("/merchant/updateCommodity")
    public String updateCommodity(@RequestBody CommodityDto commodityDto){
        if (commodityDto==null){
            return "商品信息缺失";
        }
        commodityService.updateCommodity(commodityDto);
        return "商品更新成功";
    }

    /**
     * 商品删除
     * @param id 商品id
     * @return
     */
    @RequestMapping("/merchant/deleteCommodity")
    public String deleteCommodity(@RequestParam int id){
        commodityService.deleteCommodity(id);
        return "商品删除成功";
    }

    /**
     * 商品分页查询
     * @param pageNum 查询第几页
     * @param pageSize 每个查询页有几项数据
     * @param nameOfMer 商家名字
     * @return
     */
    @GetMapping("/merchant/selectAll")
    public List<Commodity> selectAll(@Param("pageNum") int pageNum,@Param("pageSize") int pageSize,@RequestParam String nameOfMer){
        List<Commodity> commodities=commodityService.selectAll(pageNum,pageSize,nameOfMer);
        return commodities;
    }




}
